package com.springboot.transactional.springboot_ransactional.restful;

import com.springboot.transactional.springboot_ransactional.entity.C;
import com.springboot.transactional.springboot_ransactional.repository.CRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.HashMap;
import java.util.Map;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 吴金辉
 * Date: 2018-07-08
 * Time: 14:37
 */

@Controller
@RequestMapping("test")
public class TestController {
    @Autowired
    private CRepository cRepository;


    @GetMapping("/role/test1")
    public @ResponseBody
    @Transactional(readOnly = true, isolation=Isolation.READ_COMMITTED)
/*
隔离级别
含义
isolation_default
使用数据库默认的事务隔离级别
isolation_read_uncommitted
允许读取尚未提交的修改，可能导致脏读、幻读和不可重复读
isolation_read_committed
允许从已经提交的事务读取，可防止脏读、但幻读，不可重复读仍然有可能发生
isolation_repeatable_read
对相同字段的多次读取的结果是一致的，除非数据被当前事务自生修改。可防止脏读和不可重复读，但幻读仍有可能发生
isolation_serializable
完全服从acid隔离原则，确保不发生脏读、不可重复读、和幻读，但执行效率最低。
*/
    Map<String, Object> test() {
        System.out.println( cRepository.getByCn("数学").get(0).getTeacher()+"----12222222222222222222222222222222222222221");
        C c=new C();
        c.setId(1L);
        c.setCn("数学");
        c.setTeacher("小明");
        cRepository.save(c);
        System.out.println( cRepository.getByCn("数学").get(0).getTeacher()+"----12222222222222222222222222222222222222221");

 //       System.out.println(cRepository.getByCn("语文").get(0).getId()+"----12222222222222222222222222222222222222221");

//    //    c.setId(1L);
//        c.setCn("德语");
//        c.setTeacher("小明");
//        System.out.println("-------------------------------------------------------------");
//        cRepository.save(c);
//        System.out.println("-------------------------------------------------------------");
        Map<String,Object> retMap=new HashMap<String,Object>() ;
        retMap.put("msaages",c.getCn());
        return retMap;
    }
}
